/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.modelos.validadores;

import br.com.saber.certificacao.ejbs.stateless.ObjetivoCertificacaoBean;
import br.com.saber.certificacao.modelos.ObjetivoCertificacao;
import br.com.saber.certificacao.modelos.validadores.exceptions.ObjetivoCertificacaoException;
import br.com.saber.certificacao.modelos.validadores.exceptions.generica.ValidacaoExcecao;
import br.com.saber.certificacao.modelos.validadores.interfaces.ValidadorInterface;
import org.apache.commons.lang.StringUtils;

/**
 *
 * @author Guilherme
 */
public class ObjetivoCertificacaoValidador implements ValidadorInterface<ObjetivoCertificacao, ObjetivoCertificacaoBean>{

    @Override
    public void validar(ObjetivoCertificacao entidade, ObjetivoCertificacaoBean bean, Object object) throws ValidacaoExcecao {
         if (StringUtils.isBlank(entidade.getObjetivo())) {
            lancarException(("questaoObjetivoCertificacaoNulo"), "Objetivo Certificação");
        }
          if (entidade.getObjetivo().length() > 150) {
            lancarException(("questaoObjetivoCertificacaoLongo"), "Objetivo Certificação");
        }
          ObjetivoCertificacao verifica = bean.buscarObjetivoCertificacaoPorObjetivo(entidade.getObjetivo());
          if(entidade.getId() == null && verifica != null){
              lancarException("questaoObjetivoCertificacaoExistente", "Objetivo Certificação");
          }
          if(entidade.getId() != null && verifica != null && !verifica.getId().equals(entidade.getId()) &&
                  entidade.getObjetivo().equalsIgnoreCase(verifica.getObjetivo())){
              lancarException("questaoObjetivoCertificacaoExistente", "Objetivo Certificação");
          }
          if(entidade.getDetalhe() !=null && entidade.getDetalhe().length() > 2000){
              lancarException(("questaoObjetivoCertificacaoDetalheLongo"), "Detalhe");
          }
    }
    
     private void lancarException(String msg, String atributo) {
        ObjetivoCertificacaoException ex = new ObjetivoCertificacaoException(msg, atributo);
        throw ex;
    }
}
